unit unitformempresas;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Menus,
  DBGrids, unitmainform, sqldb, db;

type

  { TFormEmpresas }

  TFormEmpresas = class(TForm)
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    MainMenu1: TMainMenu;
    MenuItem1: TMenuItem;
    MenuItem2: TMenuItem;
    MenuItem3: TMenuItem;
    MenuItem4: TMenuItem;
    MenuItem5: TMenuItem;
    MenuItem6: TMenuItem;
    MenuItem7: TMenuItem;
    MenuItem8: TMenuItem;
    MenuItem9: TMenuItem;
    SQLQuery1: TSQLQuery;
    procedure DBGrid1CellClick(Column: TColumn);
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure MenuItem4Click(Sender: TObject);
    procedure MenuItem5Click(Sender: TObject);
    procedure MenuItem6Click(Sender: TObject);
    procedure MenuItem8Click(Sender: TObject);
    procedure MenuItem9Click(Sender: TObject);
    procedure ordenar_grid();
  private
    nombre : string;
  public
    { public declarations }
  end;

var
  FormEmpresas: TFormEmpresas;

implementation

{$R *.lfm}

{ TFormEmpresas }

procedure TFormEmpresas.ordenar_grid();
begin
  if SQLQuery1.Active = true then
    SQLQuery1.Close;

  SQLQuery1.SQL.Text := 'select * from empresa where emp_nombre ilike ''%' + nombre + '%'' order by emp_nombre';

  SQLQuery1.Open;

  DBGrid1.Columns[0].Title.Caption := 'Codigo';
  DBGrid1.Columns[1].Title.Caption := 'Nombre Empresa';

  DBGrid1.Columns[0].Width := 80;
  DBGrid1.Columns[1].Width := 225;
end;

procedure TFormEmpresas.FormCreate(Sender: TObject);
begin
  SQLQuery1.DataBase := MainForm.PQConnection1;
  SQLQuery1.Transaction := MainForm.SQLTransaction1;
end;

procedure TFormEmpresas.DBGrid1CellClick(Column: TColumn);
var
  nuevo_nombre : string;
  QueryString : string;

begin
  nuevo_nombre := InputBox('Modificacion de Empresa', 'Modifique el nombre de la empresa:',
    SQLQuery1.FieldByName('emp_nombre').AsString);

  if nuevo_nombre <> '' then
  begin
    QueryString := 'update empresa set emp_nombre = ''' + nuevo_nombre + ''' where emp_cdg = ' +
      SQLQuery1.FieldByName('emp_cdg').AsString;

    MainForm.PQConnection1.ExecuteDirect('BEGIN WORK');
    MainForm.PQConnection1.ExecuteDirect(QueryString);
    MainForm.PQConnection1.ExecuteDirect('COMMIT WORK');

    ShowMessage('MODIFICACION EXITOSA');
    ordenar_grid();
  end;
end;

procedure TFormEmpresas.FormShow(Sender: TObject);
begin
  nombre := '%';
  ordenar_grid();
end;

procedure TFormEmpresas.MenuItem4Click(Sender: TObject);
var
  nueva : string;
  QueryString : string;

begin
  nueva := InputBox('Alta de Empresa', 'Ingrese nombre:', '');

  if nueva <> '' then
  begin
    nueva := uppercase(nueva);
    QueryString := 'insert into empresa(emp_nombre) values(''' + nueva + ''')';
    MainForm.PQConnection1.ExecuteDirect('BEGIN WORK');
    MainForm.PQConnection1.ExecuteDirect(QueryString);
    MainForm.PQConnection1.ExecuteDirect('COMMIT WORK');

    ShowMessage('ALTA EXITOSA');
    ordenar_grid();
  end;
end;

procedure TFormEmpresas.MenuItem5Click(Sender: TObject);
var
  codigo : string;
  QueryString : string;

begin
  codigo := InputBox('Baja de Empresa', 'Ingrese el codigo de empresa:', '');
  if codigo <> '' then
  begin
    QueryString := 'delete from empresa where emp_cdg = ' + codigo;
    MainForm.PQConnection1.ExecuteDirect('BEGIN WORK');
    MainForm.PQConnection1.ExecuteDirect(QueryString);
    MainForm.PQConnection1.ExecuteDirect('COMMIT WORK');

    ShowMessage('BAJA EXITOSA');
    ordenar_grid();
  end;
end;

procedure TFormEmpresas.MenuItem6Click(Sender: TObject);
begin
  ShowMessage('Click en la empresa a modificar');
end;

procedure TFormEmpresas.MenuItem8Click(Sender: TObject);
begin
  nombre := InputBox('Filtro por Nombre', 'Ingrese parte del nombre:', '');
  if nombre <> '' then
    ordenar_grid();
end;

procedure TFormEmpresas.MenuItem9Click(Sender: TObject);
begin
  nombre := '%';
  ordenar_grid();
end;

end.

